﻿//#define _CRT_SECURE_NO_WARNINGS
//#include <stdio.h>

#include "common.h"

/* switch(整形表达式)
{
case 整型常量表达式:  // 决定程序的入口，注意有冒号，字符也行，识别为 ASCII 码值
	语句项;
	break; // 结束程序
...
default:  // 所以的 case 都不匹配时执行
	语句项;
	break; // 结束程序
} */

void week_day(int day)
// 传入数字 1~7，输出星期日期
{
	switch (day)  // 注意这里的 day（或表达式结果） 只能是一个整形变量，
		// 不能是浮点数
	{
	case 2:
		printf("星期二\n");
		break;
	case 1:  // case 语句的顺序可以随意改变，但建议按顺序写
		printf("星期一\n");
		break;
	case 3:
		printf("星期三\n");
		break;
	case 4:
		printf("星期四\n");
		break;
	case 5:
		printf("星期五\n");
		break;
	case 6:
		printf("星期六\n");
		break;
	case 7:
		printf("星期天\n");
		break;
	default:  // default 不必须放在最后，可以随意改变位置，但建议放在最后
		printf("请传入 1~7 的整数");
		break;
	}
}

int num_n = 1; // 全局变量

void week_day_state(int day)
// 输入 1~7 的数字，打印工作日或者休息日
{
	switch (day)
	{
	case 1:
	case 2:
	case 3:
	case 4:
	case 5:
		printf("工作日\n");
		break;
	case 6:
	case 7:
		printf("休息日\n");
	}
}

void switch_in_switch(int n, int m)
// 测试 switch 的嵌套
{
	switch (n)
	{
	case 1: n++;
	case 2: m++;
	case 3:
	{
		switch (n)
		{
		case 1: n++;
		case 2:
			n++;
			m++;
			break; // 只跳出最近的一个 switch
		}
	}
	case 4:
		m++;
		num_n++;
		break;
	default:
		break;
	}
	printf("传入的形式参数n的值为%d，形式参数m的值为%d\n", n, m);
	printf("num_n的值为：%d\n", num_n); // 2
	// 说明C语言中，函数中可以直接改变全局变量
}
